/*----- Podprogram drukowania tekstu T7 z pamięci operacyjnej */
;	pozostawiając stale tryb małych liter
; UWAGA: Zdefiniuj drukTNL na wymaganą wersję końca linii /N:
;	drukTNL EQU 2'/R'	;MacOS (do wersji 9)
;	drukTNL EQU 2'/N'	;Linux, MacOS, Windows (rozumie)
;	drukTNL EQU 2'/R/N'	;Windows, dalekopis
; Argumenty:
;	B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury
;	B2 = adres tekstu w standardowym formacie, 0 na końcu
; Wywołanie:
;	SKS  drukT7		;argumenty w drukTNL,B7,B2
; Wyniki:
;	B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury
;	B2 = adres zera kończącego tekst
;	B1 = -1 = 0c17777
;	A  - zniszczony, reszta odtworzona
; Podprogramy:
;	drukT7A
/*------------------------------------------------------------*/
drukT7	:726 0, *+2, 0	;ślad
#dT7p	NIC  0		..B6	;skok przez B6
;------
	[0c17577] = B6
#dT7a	A  = [B2]		;słowo z pamięci
	SKZ  #dT7b		;powrót gdy słowo zerowe
	SKSB B6,drukT7A		;wydruk słowa
	SKLC B2++,#dT7a..#dT7a	;adres następnego słowa
#dT7b	B6 = [0c17577] ..drukT7
;------ Koniec drukT7  ---------------------------------------*/



/*-----	Podprogram drukowania słowa tekstu T7 z akumulatora --*/
; Argumenty:
;	B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury
;	A  = słowo tekstowe w standardowym formacie 1234567n
;	B1 = liczba n znaków do wydrukowania (tylko drukT7B)
; Wywołanie:
;	SKSB B6,drukT7A		;argumenty w drukTNL,B7,A
;  lub SKSB B6,drukT7B		;argumenty w drukTNL,B7,A,B1
; Wyniki:
;	B7 = aktualny poczet: 0k21=małeLitery, 1k21=figury
;	B1 = -1 = 0c17777
;	A  - zniszczony, reszta odtworzona
; Podprogramy:
;	brak
/*------------------------------------------------------------*/
     AIF ?drukTNL
#dTNL	EQU drukTNL		;zadane NL
     AELSE
#dTNL	EQU 2'/R/N'		;domyślne NL
     AFI

drukT7A	A  = A >>< 22		;pobranie n do B1
	B1 = A & 7
	A  = A >>< 17
drukT7B	SKNLC B1--,#dT7p	;druk B1 znaków i powrót po B6
	A  = A >>< 19		;bity pocztu znaku do skali 20
	[0c17576] = A
	A  = A & 0b110
	B7 = A + B7		;bity: (nowy,stary) poczet
	A  = [#dT7k+B7]		;kody zmiany pocztu
	SKNU	#dT7k+8		;bez zmiany
	WY	6		;pierwszy kod
	A  = A <<< 5
	SKNU	#dT7k+8		;bez drugiego kodu
	WY	6   ..#dT7k+8	;drugi kod
#dT7k	DS 	(  2'/L')k4+(0)k26  ; abc -> Abc
	DS 	(2'/L/L')k9+(0)k26  ; 123 -> Abc
	DS 	(  2'/F')k4+(1)k26  ; abc -> 123
	DS 	(      0)k4+(1)k21  ; 123 -> 123
	DS 	(      0)k4+(0)k21  ; abc -> abc
	DS 	(  2'/L')k4+(0)k26  ; 123 -> abc
	DS 	(2'/F/F')k9+(1)k26  ; abc -> Ą23
	DS 	(  2'/F')k4+(1)k26  ; 123 -> Ą23
	B7 = A & 1		;nowy poczet
	A  = [0c17576]
;
     AIF    #dTNL == 2'/R'	;jeśli jako /N ma być (CR)
	A & [#dT7n]		;gdy /N - konwersja na (CR)
	SKNZ	#dT7n+2
	A  = A + [#dT7n+1] ..#dT7n+2
#dT7n	DS	0b11101k25  (2'/R'-2'/N')k25
     AELIF  #dTNL == 2'/N'	;jeśli /N ma pozostać bez zmiany
				;/N pozostaje jako (LF)
     AELSE ;#dTNL == 2'/R/N'	;jeśli jako /N ma być (CR,LF)
	A & [#dT7n]		;gdy /N - konwersja na (CR,LF)
	SKNZ	#dT7n+2
	A  = [#dT7n+1]		;konwersja /N na /R/N
	WY	6
	A  = [0c17576] ..#dT7n+2
#dT7n	DS	0b11101k25  (2'/R')k4
     AFI
	A  = A >>< 18
	WY	6		;znak
	A  = A <<< 5 ..drukT7B
;------ Koniec drukT7A ---------------------------------------*/
	KONIEC
---